#pragma once
#include "../lib/thread-pool/include/BS_thread_pool_utils.hpp" // BS::synced_stream (синхранный вывод потоков)
#include <fstream> //Для работы с файлами
#include <iostream>
#include <sstream>
#include <string>

class log_out {
private:
  std::string get_date() const; // Получаем строку со временем
  std::ofstream file_out_text; // Запись в файл
  bool file_write; // Будем ли записывать данные в файл
  BS::synced_stream sync_out; // Синхронизация вывода между потоками

public:
  enum text_info {
    ok,       // [+] green
    warring,  // [*] yellow
    no_ok,    // [-] red
    none_info // " "(нужен для обычного текста)
  };

  // Будем просто выводить текст
  log_out();
  // Будем записывать логи в файл и выводить текст
  log_out(const std::string &filename);
  ~log_out();
  void write_log(text_info text_info, const std::string &text);
};
